package 设计模式.行为模式._23访问者模式;

import java.util.Collection;
import java.util.Iterator;

/**
 * 访问者实现类,实现具体的方法
 */
public class ConcreteVisitor implements Visitor {
	/**
	 * 创建一个访问对象的方法, 获取到 访问的对象,然后 对其值进行访问
	 * @param stringE
	 */
	@Override
	public void visitString(StringElement stringE) {

		System.out.println(stringE.getValue());
		
	}

	@Override
	public void  visitFloat(FloatElement floatE) {
		System.out.println(floatE.getValue());
	}

	@Override
	public void visitCollection(Collection collection) {

		Iterator iterator = collection.iterator();
		
		while(iterator.hasNext()){
			
			Object obj = iterator.next();
			if(obj instanceof Visitable){
					//判断自己是属于什么数据类型
					((Visitable) obj).accept(this);
			}
		}
		
	}

}
